using net_work.Common.Request;
using net_work.Common.Result;
using net_work.Data.DTO.Sys;
using net_work.Data.Entity.Sys;
using net_work.Data.VO.Sys;

namespace net_work.IRepository.Sys;

public interface IAdministrativeClassRepository : IRepository<AdministrativeClass>
{
    /// <summary>
    /// 插入行政班
    /// </summary>
    /// <param name="administrativeClassAddRequest">插入行政班</param>
    /// <returns>行政班ID</returns>
    Task<long> InsertAsync(AdministrativeClassAddRequest administrativeClassAddRequest);

    /// <summary>
    /// 更新行政班信息
    /// </summary>
    /// <param name="administrativeClassUpdateRequest">更新行政班信息</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateAsync(AdministrativeClassUpdateRequest administrativeClassUpdateRequest);

    /// <summary>
    /// 获取行政班分页信息
    /// </summary>
    /// <param name="request">分页请求</param>
    /// <returns>行政班分页信息</returns>
    Task<PagedResult<AdministrativeClassResult>> GetAdministrativeClassPagedAsync(PagedRequest request);

    /// <summary>
    /// 更新行政班人数
    /// </summary>
    /// <param name="classId">行政班ID</param>
    /// <param name="classNum">行政班人数</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateClassNumAsync(long classId, long classNum);
}